package com.tadpole.music.view.widget;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;


import com.tadpole.music.R;
import com.tadpole.music.config.Constant;
import com.tadpole.music.utils.ToastUtils;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.modelmsg.WXVideoObject;
import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

/**
 * 分享的到 微信 /朋友圈/QQ好友 /QQ空间的 工具类
 * Created by SunYan
 * on 2020/4/17.
 */
public class ShareDialogUtils {


    /**
     * 分享网页类型至微信
     *
     * @param context       上下文
     * @param webUrl        网页的url
     * @param title         网页标题
     * @param content       网页描述
     * @param bitmap        位图
     * @param isShareFriend true 是好友 false 是朋友圈
     */
    public static void shareImage(Context context, String webUrl, String title, String content, Bitmap bitmap, boolean isShareFriend) {
        // 通过appId得到IWXAPI这个对象
        IWXAPI wxapi = WXAPIFactory.createWXAPI(context, Constant.WX_APP_ID);
        // 检查手机或者模拟器是否安装了微信
        if (!wxapi.isWXAppInstalled()) {
            ToastUtils.show("您还没有安装微信");
            return;
        }

        //Android微信6.6.7版本以下有bug,唤起后无法拿到回调参数。此处限制最低唤起版本为6.6.7
        if (!(wxapi.getWXAppSupportAPI() >= 0x25010500)) {
            ToastUtils.show("请您升级到最新的微信版本，当前版本不支持打开小程序");
            return;
        }

        // 初始化一个WXWebpageObject对象
        WXWebpageObject webpageObject = new WXWebpageObject();
        // 填写网页的url
        webpageObject.webpageUrl = webUrl;

        // 用WXWebpageObject对象初始化一个WXMediaMessage对象
        WXMediaMessage msg = new WXMediaMessage(webpageObject);
        // 填写网页标题、描述、位图
        msg.title = title;
        msg.description = content;
        // 如果没有位图，可以传null，会显示默认的图片

        //设置位图
        if (bitmap == null) {
            Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.mipmap.share_app_icon);
            msg.setThumbImage(bitmap1);
        }else{
            msg.setThumbImage(createBitmapThumbnail(bitmap));
        }


        // 构造一个Req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        // transaction用于唯一标识一个请求（可自定义）
        req.transaction = "webpage";
        // 上文的WXMediaMessage对象
        req.message = msg;
        // SendMessageToWX.Req.WXSceneSession是分享到好友会话
        // SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈
        req.scene = SendMessageToWX.Req.WXSceneSession;
        req.scene = isShareFriend ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;
        // 向微信发送请求
        wxapi.sendReq(req);
    }


    /**
     * 分享网页类型至微信
     *
     * @param context       上下文
     * @param webUrl        网页的url
     * @param title         网页标题
     * @param content       网页描述
     * @param bitmap        位图
     * @param isShareFriend true 是好友 false 是朋友圈
     */
    public static void shareVideo(Context context, String webUrl, String title, String content, Bitmap bitmap,String videoUrl, boolean isShareFriend) {
        // 通过appId得到IWXAPI这个对象
        IWXAPI wxapi = WXAPIFactory.createWXAPI(context, Constant.WX_APP_ID);
        // 检查手机或者模拟器是否安装了微信
        if (!wxapi.isWXAppInstalled()) {
            ToastUtils.show("您还没有安装微信");
            return;
        }

        //Android微信6.6.7版本以下有bug,唤起后无法拿到回调参数。此处限制最低唤起版本为6.6.7
        if (!(wxapi.getWXAppSupportAPI() >= 0x25010500)) {
            ToastUtils.show("请您升级到最新的微信版本，当前版本不支持打开小程序");
            return;
        }

        //初始化一个WXVideoObject，填写url
        WXVideoObject video = new WXVideoObject();
        video.videoUrl = videoUrl;
        IWXAPI api = WXAPIFactory.createWXAPI(context, Constant.WX_APP_ID, true);
        //用 WXVideoObject 对象初始化一个 WXMediaMessage 对象
        WXMediaMessage msg = new WXMediaMessage(video);
        msg.title =title;
        msg.description = content;

        //设置位图
        if (bitmap == null) {
            Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.mipmap.share_app_icon);
            msg.setThumbImage(bitmap1);
        }else{
            msg.setThumbImage(createBitmapThumbnail(bitmap));
        }

        // 构造一个Req
        SendMessageToWX.Req req = new SendMessageToWX.Req();
        // transaction用于唯一标识一个请求（可自定义）
        req.transaction = "webpage";
        // 上文的WXMediaMessage对象
        req.message = msg;
        // SendMessageToWX.Req.WXSceneSession是分享到好友会话
        // SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈
        req.scene = SendMessageToWX.Req.WXSceneSession;
        req.scene = isShareFriend ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;
        // 向微信发送请求
        wxapi.sendReq(req);
    }


    //压缩图片
    public static Bitmap createBitmapThumbnail(Bitmap bitMap) {
        int width = bitMap.getWidth();
        int height = bitMap.getHeight();
        // 设置想要的大小
        int newWidth = 99;
        int newHeight = 99;
        // 计算缩放比例
        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        // 取得想要缩放的matrix参数
        Matrix matrix = new Matrix();
        matrix.postScale(scaleWidth, scaleHeight);
        // 得到新的图片
        Bitmap newBitMap = Bitmap.createBitmap(bitMap, 0, 0, width, height, matrix, true);
        return newBitMap;
    }
}
